package edu.hawaii.nearestneighbor.classifiers;

import java.util.List;

import edu.hawaii.nearestneighbor.classifications.Classification;
import edu.hawaii.nearestneighbor.util.DataPoint;

/**
 * Provides the interface specification of methods that a Nearest Neighbor classification type class
 * must implement.
 * 
 * @author Robert Puckett
 * 
 */
public interface Classifier {
  /**
   * Classifies the test DataPoint using the data provided.
   * 
   * @param data The collection of datapoints to be used in the classification (algorithm may choose
   *        to use a subset of these).
   * @param test The point to be classified.
   * @return The integer representation of the state of nature for the test datapoint.
   */
  Classification classify(List<DataPoint> data, DataPoint test);
  // /**
  // * @param data The collection of datapoints to be used in the classification (algorithm may
  // choose to use a subset of these).
  // * @param test The point to be classified.
  // * @param distancetype The type of distance measure to be used for classification (0 =
  // Euclidean, 1 = Cam-weighted).
  // * @return The integer representation of the state of nature for the test datapoint.
  // */
  // Classification Classify(List<DataPoint> data, DataPoint test, int distancetype);
  //  
}
